如何在JS中进行中文、字母、数字的排序 |
您所在的位置:网站首页 › jsp 数组排序 › 如何在JS中进行中文、字母、数字的排序 |
在JS中进行中文、字母、数字的排序
sortResult(data, type) {
let result = []
switch (type) {
// 当比较的item为对象的某个属性时,value = item [key]
// 1.中文(按第一个文字)
case 'chinese':
result = data.sort((item1, item2) => {
const value1 = item1.charAt(0);
const value2 = item2.charAt(0);
// 这里localeCompare应该是不支持第二个参数的 但是并没有报错,请直接使用value1.localeCompare(value2)
return value1.localeCompare(value2, 'zh-CN');
})
break;
// 2.字母(按第一个字母且不区分大小写,请自行修改)
case 'letter':
result = data.sort((item1, item2) => {
//2.1不区分大小写
const value1 = item1.charAt(0).toLowerCase();
const value2 = item2.charAt(0).toLowerCase();
return value1.localeCompare(value2);
//2.2区分大小写
const value1 = item1.charAt(0);
const value2 = item2.charAt(0);
//测试2.2
const arr = ['A','a','b','B']
arr.sort(function (item1, item2) {
return item1.localeCompare(item2);
})
//输出["a", "A", "b", "B"]
})
break;
//3.数字
case 'number':
result = data.sort((item1, item2) => {
const value1 = item1;
const value2 = item2;
return value1 - value2;
})
break;
default:
result = data;
break;
}
return result;
}
localeCompare介绍
定义和用法
用本地特定的顺序来比较两个字符串。 语法stringObject.localeCompare(target) 参数 描述target 要以本地特定的顺序与 stringObject 进行比较的字符串。 返回值说明比较结果的数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。 说明把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。 localeCompare() 方法提供的比较字符串的方法,考虑了*****规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |